package br.com.financas.bean;

import java.text.DateFormatSymbols;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import br.com.financas.abstractions.IContaService;
import br.com.financas.abstractions.IReceitaDataService;
import br.com.financas.entity.Conta;
import br.com.financas.entity.ReceitaData;
import br.com.financas.entity.Usuario;
import br.com.financas.service.ContaService;
import br.com.financas.service.ReceitaDataService;

@ManagedBean
@ViewScoped
public class ListarReceitaBean extends AbstractBean {

	@ManagedProperty(value = UsuarioBean.INJECTION_NAME)
	private UsuarioBean usuarioBean;
	private ReceitaData receitaDataSelecionada = new ReceitaData();
	private Usuario usuario = new Usuario();
	private Conta conta = new Conta();
	private String mes;
	private List<ReceitaData> receitaDataList = new ArrayList<ReceitaData>();
	private List<String> mesList = new ArrayList<String>();
	private IReceitaDataService<ReceitaData> receitaDataService = new ReceitaDataService();
	private IContaService<Conta> contaService =  new ContaService();
	private List<Conta> contaList = new ArrayList<Conta>();

	public List<ReceitaData> getReceitaDataList() {
		usuario = usuarioBean.getUsuario();
		receitaDataList = receitaDataService.obterPorUsuario(usuario);

		return receitaDataList;
	}

	public ReceitaData getReceitaDataSelecionada() {
		return receitaDataSelecionada;
	}

	public void setReceitaDataSelecionada(ReceitaData receitaDataSelecionada) {
		this.receitaDataSelecionada = receitaDataSelecionada;
	}

	public void removerReceita() throws Exception {
		if (receitaDataService.validaDeletar(receitaDataSelecionada))
			receitaDataList.remove(receitaDataSelecionada);
	}

	public void setUsuarioBean(UsuarioBean usuarioBean) {
		this.usuarioBean = usuarioBean;
	}

	public List<String> getMesList() {
		String[] meses = new DateFormatSymbols().getMonths();
		
		mesList.add("Todos");
		
		for (int i = 0; i < meses.length; i++) {
			mesList.add(meses[i]);
		}
		
		mesList.remove(13);
		
		return mesList;
	}

	public void setMesList(List<String> mesList) {
		this.mesList = mesList;
	}
	
	public List<Conta> getContaList() {
		usuario = usuarioBean.getUsuario();
		contaList = contaService.obterPorUsuario(usuario);
		return contaList;
	}

	public String getMes() {
		return mes;
	}

	public void setMes(String mes) {
		this.mes = mes;
	}

	public Conta getConta() {
		return conta;
	}

	public void setConta(Conta conta) {
		this.conta = conta;
	}
	
	
	

}
